home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1985-02-09 | 13.1 KB | 441 lines |
- 10 ' PC-Pen - Version 1.0
- 20 ' (C) Copyright 1985 SoftTec Systems
- 30 ' All Rights Reserved
- 40 ' This program was run through STS DELCMT
- 50 ' on Feb 5, 1985 at 9:11:30.
- 60 CLEAR:ON ERROR GOTO 3980:DEF SEG:DEFINT A-Z:OPTION BASE 1:KEY OFF:RESTORE
- 70 DIM PICA%(6802),PICB%(6802),PICC%(6802),ERRCD%(18),ERRRES%(18),ERRMSG$(18),ACT$(5)
- 80 FOR I=1 TO 4:READ J:KEY 14+I,CHR$(J)+CHR$(&H46):ON KEY(14+I) GOSUB 3830:KEY(14+I) ON:NEXT I
- 90 FOR I=1 TO 18:READ ERRCD%(I),ERRRES%(I),ERRMSG$(I):NEXT I
- 100 FOR I=1 TO 5:READ ACT$(I):NEXT I
- 110 FOR I=1 TO 10:KEY I,"":NEXT I
- 120 PICA%(1)=-999:PICB%(1)=-999:PICC%(1)=-999
- 130 PNT=0:RES=1:PAL=0:BACK=0:MARK=0:COL=3:MODE=0:BCKPNT=0:X=159:Y=85:BLNK=1:ESC=0
- 140 SCREEN 0,1,0,0:WIDTH 80:CLS:COLOR 2,0
- 150 LOCATE 3,5,0:PRINT CHR$(201);
- 160 FOR I=1 TO 68:PRINT CHR$(205);:NEXT I
- 170 PRINT CHR$(187);
- 180 FOR I=4 TO 22:LOCATE I,74,0:PRINT CHR$(186);:NEXT I
- 190 LOCATE 23,74,0:PRINT CHR$(188);
- 200 FOR I=73 TO 6 STEP -1:LOCATE 23,I,0:PRINT CHR$(205);:NEXT I
- 210 LOCATE 23,5,0:PRINT CHR$(200);
- 220 FOR I=22 TO 4 STEP -1:LOCATE I,5,0:PRINT CHR$(186);:NEXT I
- 230 COLOR 6,0
- 240 LOCATE 5,10,0 : PRINT "PC-Pen - Version 1.0";
- 250 LOCATE 5,59,0 : PRINT "Reg. #00001";
- 260 LOCATE 6,10,0 : PRINT "(C) Copyright 1985 SoftTec Systems";
- 270 LOCATE 6,51,0 : PRINT "All Rights Reserved";
- 280 LOCATE 8,10,0 : PRINT "PC-Pen is a shareware product. Please help us distribute";
- 290 LOCATE 9,10,0 : PRINT "PC-Pen by sharing unmodified copies of PC-Pen, its user's";
- 300 LOCATE 10,10,0 : PRINT "manual, and manual printer with others. If you find PC-Pen";
- 310 LOCATE 11,10,0 : PRINT "useful we trust you to register your copy. Registration";
- 320 LOCATE 12,10,0 : PRINT "costs $25 and entitles you to telephone and mail support, a"
- 330 LOCATE 13,10,0 : PRINT "diskette containing your own registered copy of PC-Pen, a";
- 340 LOCATE 14,10,0 : PRINT "bound and registered copy of the PC-Pen user's manual, and";
- 350 LOCATE 15,10,0 : PRINT "a free mailed copy of the next updated version of PC-Pen.";
- 360 LOCATE 16,10,0 : PRINT "Residents of Virginia include 4% sales tax. Send name and";
- 370 LOCATE 17,10,0 : PRINT "address and check or money order to:";
- 380 LOCATE 19,29,0 : PRINT "SoftTec Systems";
- 390 LOCATE 20,29,0 : PRINT "2251 Pimmit Drive #434";
- 400 LOCATE 21,29,0 : PRINT "Falls Church, VA 22043";
- 410 LOCATE 24,29,0
- 420 COLOR 2,0
- 430 PRINT "Press any key to begin.";
- 440 IN$=INKEY$:IF IN$="" THEN 440
- 450 SCREEN RES,0:COLOR BACK,PAL
- 460 GOSUB 1570
- 470 IN$=INKEY$:IF IN$<>"" THEN 530
- 480 FOR I=1 TO 25:NEXT I
- 490 IF BLNK=1 THEN PSET (X,Y),0
- 500 IF MARK=1 THEN PSET (MARKX,MARKY),0
- 510 FOR I=1 TO 25:NEXT I
- 520 GOTO 880
- 530 IF BLNK=1 THEN PSET (X,Y),0
- 540 IF MARK=1 THEN PSET (MARKX,MARKY),0
- 550 IF PNT=1 THEN IF MODE=0 THEN BCKPNT=COL ELSE BCKPNT=0
- 560 IF LEN(IN$)>1 THEN 700
- 570 IN=ASC(IN$)
- 580 PSET (X,Y),BCKPNT
- 590 IF IN>13 OR IN<7 THEN 670
- 600 IF IN<>8 THEN 640
- 610 X=X-8:IF X>=8 THEN 630 ELSE IF RES=1 THEN X=306 ELSE X=626
- 620 Y=Y-8:IF Y<3 THEN Y=162
- 630 GOSUB 1130:PRINT " ";:GOTO 680
- 640 IF IN=9 THEN X=X+8:IF X>317*RES THEN X=X-317*RES
- 650 IF IN=13 THEN X=10:Y=Y+8:IF Y>167 THEN Y=10
- 660 GOTO 680
- 670 GOSUB 1130:POKE &H4E,COL:PRINT IN$;:X=X+8:IF 317*RES-X<6/RES THEN X=10:Y=Y+8:IF Y>167 THEN Y=10
- 680 BCKPNT = POINT(X,Y)
- 690 GOTO 470
- 700 IN=ASC(RIGHT$(IN$,1))
- 710 IF IN<71 OR IN>81 THEN 760
- 720 PSET (X,Y),BCKPNT
- 730 ON IN-70 GOSUB 1010,930,1040,3830,950,3830,990,3830,1070,970,1100
- 740 BCKPNT=POINT (X,Y)
- 750 GOTO 880
- 760 IF IN<59 OR IN>68 THEN 790
- 770 ON IN-58 GOSUB 1200,1500,1260,1310,3670,1550,2030,1940,1350,2870
- 780 GOTO 880
- 790 IF IN<84 OR IN>91 THEN 820
- 800 ON IN-83 GOSUB 2360,2430,2580,2610,2800,2470,2550,2520
- 810 GOTO 880
- 820 IF IN<94 OR IN>99 THEN 850
- 830 ON IN-93 GOSUB 3620,3830,2270,2310,1670,2400
- 840 GOTO 880
- 850 IF IN=15 THEN PSET (X,Y),BCKPNT:X=X-8:IF X<0 THEN X=317*RES+X:GOTO 680 ELSE GOTO 680
- 860 IF IN=82 THEN GOSUB 1400:GOTO 880
- 870 IF IN=83 THEN GOSUB 1450:GOTO 880
- 880 IF MARK=0 THEN 910
- 890 I=POINT(MARKX,MARKY):IF I<>0 THEN BCKMRK=I
- 900 PSET (MARKX,MARKY),MRKCOL
- 910 IF BLNK=1 THEN PSET(X,Y),COL ELSE IF PNT=1 THEN IF MODE=0 THEN PSET(X,Y),COL ELSE PSET(X,Y),0
- 920 GOTO 470
- 930 IF Y>0 THEN Y=Y-1 ELSE Y=169
- 940 RETURN
- 950 IF X>0 THEN X=X-1 ELSE X=317*RES
- 960 RETURN
- 970 IF Y<169 THEN Y=Y+1 ELSE Y=0
- 980 RETURN
- 990 IF X<317*RES THEN X=X+1 ELSE X=0
- 1000 RETURN
- 1010 IF Y>0 THEN Y=Y-1 ELSE Y=169
- 1020 IF X>0 THEN X=X-1 ELSE X=317*RES
- 1030 RETURN
- 1040 IF Y>0 THEN Y=Y-1 ELSE Y=169
- 1050 IF X<317*RES THEN X=X+1 ELSE X=0
- 1060 RETURN
- 1070 IF Y<169 THEN Y=Y+1 ELSE Y=0
- 1080 IF X>0 THEN X=X-1 ELSE X=317*RES
- 1090 RETURN
- 1100 IF Y<169 THEN Y=Y+1 ELSE Y=0
- 1110 IF X<317*RES THEN X=X+1 ELSE X=0
- 1120 RETURN
- 1130 PRY=INT(Y/8)+1:PRX=INT(X/8)+1
- 1140 IF PRY=1 THEN Y=Y+8:GOTO 1130
- 1150 IF PRY=22 THEN Y=Y-8:GOTO 1130
- 1160 IF PRX=1 THEN X=X+8:GOTO 1130
- 1170 IF PRX=40*RES THEN X=10:Y=Y+8:IF Y>167 THEN Y=10:GOTO 1130 ELSE GOTO 1130
- 1180 LOCATE PRY,PRX
- 1190 RETURN
- 1200 GOSUB 3840:GOSUB 1690:IF MARK=1 THEN MARK=0
- 1210 IF RES=1 THEN BKCOL=COL:COL=1:BKPAL=PAL:PAL=0:BKBACK=BACK:BACK=0:X=X*2:RES=2 ELSE COL=BKCOL:PAL=BKPAL:BACK=BKBACK:X=INT(X/2):RES=1
- 1220 SCREEN RES,0:IF RES=1 THEN COLOR BACK,PAL
- 1230 IF WNDW=1 THEN GOSUB 1570 ELSE GOSUB 1610
- 1240 GOSUB 1710
- 1250 RETURN
- 1260 IF RES=2 THEN ERROR 204:GOTO 1300
- 1270 IF PAL=0 THEN PAL=1 ELSE PAL=0
- 1280 COLOR BACK,PAL
- 1290 IF WNDW=1 THEN POKE &H4E,3:LOCATE 24,28:PRINT USING "#";PAL+1;
- 1300 RETURN
- 1310 IF RES=2 THEN ERROR 204:GOTO 1340
- 1320 COL=COL+1:IF COL>3 THEN COL=1
- 1330 IF WNDW=1 THEN POKE &H4E,3:LOCATE 24,39:PRINT USING "#";COL;
- 1340 RETURN
- 1350 GOSUB 3840:GOSUB 3890
- 1360 IF ESC=1 THEN ESC=0:GOTO 1390
- 1370 IF IN$="N" OR IN$="n" THEN 1390
- 1380 SYSTEM
- 1390 RETURN
- 1400 IF PNT=0 THEN PNT=1 ELSE PNT=0
- 1410 IF WNDW=0 THEN 1440
- 1420 POKE &H4E,3:LOCATE 25,24*RES:PRINT "PEN=";
- 1430 IF PNT=0 THEN PRINT "UP "; ELSE PRINT "DOWN";
- 1440 RETURN
- 1450 IF BLNK=0 THEN BLNK=1 ELSE BLNK=0:PSET (X,Y),BCKPNT
- 1460 IF WNDW=0 THEN 1490
- 1470 POKE &H4E,3:LOCATE 25,33*RES:PRINT "POS=";
- 1480 IF BLNK=0 THEN PRINT "OFF"; ELSE PRINT "ON ";
- 1490 RETURN
- 1500 IF RES=2 THEN ERROR 204:GOTO 1540
- 1510 BACK=BACK+1:IF BACK>15 THEN BACK=0
- 1520 COLOR BACK,PAL
- 1530 IF WNDW=1 THEN POKE &H4E,3:LOCATE 24,19:PRINT USING "##";BACK+1;
- 1540 RETURN
- 1550 IF WNDW=1 THEN GOSUB 1610 ELSE GOSUB 1570
- 1560 RETURN
- 1570 VIEW (1,1)-(318*RES,170),,1
- 1580 GOSUB 1730:GOSUB 1760
- 1590 WNDW=1
- 1600 RETURN
- 1610 VIEW (1,1)-(318*RES,170),,0
- 1620 LOCATE 23,1:PRINT SPC(39*RES);
- 1630 LOCATE 24,1:PRINT SPC(39*RES);
- 1640 LOCATE 25,1:PRINT SPC(39*RES);
- 1650 WNDW=0
- 1660 RETURN
- 1670 GOSUB 3840:GET (0,0)-(317*RES,169),PICC%
- 1680 RETURN
- 1690 GET (0,0)-(317*RES,169),PICA%
- 1700 RETURN
- 1710 PUT (0,0),PICA%,PSET
- 1720 RETURN
- 1730 IF RES=1 THEN LOCATE 23,1 ELSE LOCATE 23,21
- 1740 POKE &H4E,1:PRINT " PC-Pen F10 ==> Help";
- 1750 RETURN
- 1760 POKE &H4E,3
- 1770 LOCATE 24,2*RES:PRINT "RES=";
- 1780 IF RES=1 THEN PRINT "LOW "; ELSE PRINT "HIGH";
- 1790 LOCATE 24,14*RES:PRINT "BACK=";
- 1800 PRINT USING "##";BACK+1;
- 1810 LOCATE 24,24*RES:PRINT "PAL=";
- 1820 PRINT USING "#";PAL+1;
- 1830 LOCATE 24,33*RES:PRINT "COLOR=";
- 1840 PRINT USING "#";COL;
- 1850 LOCATE 25,2*RES:PRINT "MODE=";
- 1860 IF MODE=0 THEN PRINT "DRAW "; ELSE PRINT "ERASE";
- 1870 LOCATE 25,14*RES:PRINT "MARK=";
- 1880 IF MARK=0 THEN PRINT "OFF"; ELSE PRINT "SET";
- 1890 LOCATE 25,24*RES:PRINT "PEN=";
- 1900 IF PNT=0 THEN PRINT "UP "; ELSE PRINT "DOWN";
- 1910 LOCATE 25,33*RES:PRINT "POS=";
- 1920 IF BLNK=0 THEN PRINT "OFF"; ELSE PRINT "ON ";
- 1930 RETURN
- 1940 GOSUB 3840:GOSUB 1690
- 1950 I=0:GOSUB 2130
- 1960 IF ESC=1 THEN ESC=0:GOTO 2010
- 1970 LOCATE 23,1:PRINT SPC(39*RES);
- 1980 POKE &H4E,1:IF RES=1 THEN LOCATE 23,16 ELSE LOCATE 23,36
- 1990 PRINT "Saving...";
- 2000 BSAVE NAM$,VARPTR(PICA%(1)),6802*2
- 2010 LOCATE 23,1:IF WNDW=0 THEN PRINT SPC(39*RES); ELSE GOSUB 1730
- 2020 RETURN
- 2030 GOSUB 3840:GOSUB 1690
- 2040 I=1:GOSUB 2130
- 2050 IF ESC=1 THEN ESC=0:GOTO 2100
- 2060 LOCATE 23,1:PRINT SPC(39*RES);
- 2070 POKE &H4E,1:IF RES=1 THEN LOCATE 23,16 ELSE LOCATE 23,36
- 2080 PRINT "Loading...";
- 2090 BLOAD NAM$,VARPTR(PICA%(1))
- 2100 LOCATE 23,1:IF WNDW=0 THEN PRINT SPC(39*RES); ELSE GOSUB 1730
- 2110 GOSUB 1710:BCKPNT=POINT(X,Y):BCKMRK=POINT(MARKX,MARKY)
- 2120 RETURN
- 2130 NAM$="":LOCATE 23,1:PRINT SPC(39*RES);
- 2140 POKE &H4E,1:IF RES=1 THEN LOCATE 23,2 ELSE LOCATE 23,22
- 2150 IF I=0 THEN PRINT "Save file name: "; ELSE PRINT "Load file name: ";
- 2160 IN$=INKEY$:IF IN$="" THEN 2160
- 2170 IF LEN(IN$)>1 THEN 2160
- 2180 IN=ASC(IN$)
- 2190 IF IN=13 THEN 2260
- 2200 IF IN=27 THEN ESC=1:GOTO 2260
- 2210 IF IN=8 AND LEN(NAM$)>0 THEN LOCATE 23,POS(I)-1:PRINT " ";:LOCATE 23,POS(I)-1:NAM$=MID$(NAM$,1,LEN(NAM$)-1)
- 2220 IF IN<32 OR IN>122 THEN 2160
- 2230 IF LEN(NAM$)=22 THEN 2250
- 2240 NAM$=NAM$+IN$:PRINT IN$;
- 2250 GOTO 2160
- 2260 RETURN
- 2270 GOSUB 3840:GOSUB 3720
- 2280 IF ESC=1 THEN ESC=0:GOTO 2300
- 2290 PAINT (X,Y),COL,BRD:BCKPNT=COL
- 2300 RETURN
- 2310 GOSUB 3840:GOSUB 3720
- 2320 IF ESC=1 THEN ESC=0:GOTO 2350
- 2330 PAINT (X,Y),0,BRD:BCKPNT=0
- 2340 IF MARK=1 THEN IF POINT (MARKX,MARKY)=0 THEN BCKMRK=0
- 2350 RETURN
- 2360 IF MARK=1 THEN PSET (MARKX,MARKY),BCKMRK
- 2370 MARKX=X:MARKY=Y:MRKCOL=COL:MARK=1:BCKMRK=BCKPNT:IF WNDW=0 THEN 2390
- 2380 POKE &H4E,3:LOCATE 25,14*RES:PRINT "MARK=SET";
- 2390 RETURN
- 2400 IF PICC%(1)=-999 THEN ERROR 201 ELSE GOSUB 3840:PUT (0,0),PICC%,PSET
- 2410 BCKPNT=POINT(X,Y)
- 2420 RETURN
- 2430 IF MARK=0 THEN ERROR 202:GOTO 2460
- 2440 PSET (MARKX,MARKY),BCKMRK:MARK=0:IF WNDW=0 THEN 2460
- 2450 POKE &H4E,3:LOCATE 25,14*RES:PRINT "MARK=OFF";
- 2460 RETURN
- 2470 IF MARK=0 THEN ERROR 202:GOTO 2510
- 2480 TX1=ABS(MARKX-X):TY1=(6*ABS(MARKY-Y)/5)*RES
- 2490 CIRCLE (MARKX,MARKY),SQR(TX1*TX1+TY1*TY1),COL
- 2500 IF POINT(X,Y)=COL THEN BCKPNT=COL
- 2510 RETURN
- 2520 IF MARK=0 THEN ERROR 202:GOTO 2540
- 2530 LINE (MARKX,MARKY)-(X,Y),COL:BCKPNT=COL
- 2540 RETURN
- 2550 IF MARK=0 THEN ERROR 202:GOTO 2570
- 2560 LINE (MARKX,MARKY)-(X,Y),COL,B:BCKPNT=COL
- 2570 RETURN
- 2580 IF MARK=0 THEN ERROR 202:GOTO 2600
- 2590 GOSUB 3840:GET (MARKX,MARKY)-(X,Y),PICB%
- 2600 RETURN
- 2610 IF PICB%(1)=-999 THEN ERROR 203:GOTO 2790
- 2620 GOSUB 3840:POKE &H4E,1:LOCATE 23,1:PRINT SPC(39*RES);
- 2630 IF RES=1 THEN LOCATE 23,13 ELSE LOCATE 23,33
- 2640 PRINT "Method = ";:I=0
- 2650 I=I+1:IF I>5 THEN I=1
- 2660 IF RES=1 THEN LOCATE 23,22 ELSE LOCATE 23,42
- 2670 PRINT ACT$(I);
- 2680 IN$=INKEY$:IF IN$="" THEN 2680 ELSE IN=ASC(IN$)
- 2690 IF IN=27 THEN 2770
- 2700 IF IN<>13 THEN 2650
- 2710 ON I GOTO 2720,2730,2740,2750,2760
- 2720 PUT (X,Y),PICB%,PSET:GOTO 2770
- 2730 PUT (X,Y),PICB%,PRESET:GOTO 2770
- 2740 PUT (X,Y),PICB%,XOR:GOTO 2770
- 2750 PUT (X,Y),PICB%,OR:GOTO 2770
- 2760 PUT (X,Y),PICB%,AND:GOTO 2770
- 2770 LOCATE 23,1:IF WNDW=0 THEN PRINT SPC(39*RES); ELSE GOSUB 1730
- 2780 BCKPNT=POINT (X,Y)
- 2790 RETURN
- 2800 IF MARK=0 THEN ERROR 202:GOTO 2860
- 2810 IF MARKX=X OR MARKY=Y THEN ERROR 200:GOTO 2860
- 2820 GOSUB 3840:IF X<MARKX THEN TX1=X:TX2=MARKX ELSE TX1=MARKX:TX2=X
- 2830 IF Y<MARKY THEN TY1=Y:TY2=MARKY ELSE TY1=MARKY:TY2=Y
- 2840 VIEW (TX1+1,TY1+1)-(TX2+1,TY2+1):CLS
- 2850 VIEW (1,1)-(318*RES,170):BCKPNT=0:BCKMRK=0
- 2860 RETURN
- 2870 GOSUB 1690:SCREEN 0,1,1,0:WIDTH 80:CLS:COLOR 2,0
- 2880 LOCATE 1,35,0 : PRINT "PC-Pen Help";
- 2890 COLOR 6,0
- 2900 LOCATE 3, 4,0 : PRINT "PC-Pen commands are entered by the function keys as shown below. Text"
- 2910 LOCATE 4, 4,0 : PRINT "is entered by the regular text keys. The pen is moved by the ";CHR$(24);", ";CHR$(25);", ";CHR$(26);", ";CHR$(27);", "
- 2920 LOCATE 5, 4,0 : PRINT "Home, PgUp, End and PgDn keys. The pen is lifted up/down by the Ins key"
- 2930 LOCATE 6, 4,0 : PRINT "and its position is turned on/off by the Del key. Use PrtSc to print."
- 2940 COLOR 0,2
- 2950 LOCATE 8,34,0 : PRINT "KEYTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENCLOSE";
- 2960 LOCATE 9,34,0 : PRINT "OPENKEYTHENTHENTHENCLOSE KEYTHENTHENTHENCLOSEOPEN";
- 2970 LOCATE 10,34,0 : PRINT "OPENOPENF1 OPEN OPENF2 OPENOPEN";
- 2980 LOCATE 11,34,0 : PRINT "OPENSCREENTHENTHENTHENLOAD SCREENTHENTHENTHENLOADOPEN";
- 2990 LOCATE 12,34,0 : PRINT "OPENKEYTHENTHENTHENCLOSE KEYTHENTHENTHENCLOSEOPEN";
- 3000 LOCATE 13,34,0 : PRINT "OPENOPENF3 OPEN OPENF4 OPENOPEN";
- 3010 LOCATE 14,34,0 : PRINT "OPENSCREENTHENTHENTHENLOAD SCREENTHENTHENTHENLOADOPEN";
- 3020 LOCATE 15,34,0 : PRINT "OPENKEYTHENTHENTHENCLOSE KEYTHENTHENTHENCLOSEOPEN";
- 3030 LOCATE 16,34,0 : PRINT "OPENOPENF5 OPEN OPENF6 OPENOPEN";
- 3040 LOCATE 17,34,0 : PRINT "OPENSCREENTHENTHENTHENLOAD SCREENTHENTHENTHENLOADOPEN";
- 3050 LOCATE 18,34,0 : PRINT "OPENKEYTHENTHENTHENCLOSE KEYTHENTHENTHENCLOSEOPEN";
- 3060 LOCATE 19,34,0 : PRINT "OPENOPENF7 OPEN OPENF8 OPENOPEN";
- 3070 LOCATE 20,34,0 : PRINT "OPENSCREENTHENTHENTHENLOAD SCREENTHENTHENTHENLOADOPEN";
- 3080 LOCATE 21,34,0 : PRINT "OPENKEYTHENTHENTHENCLOSE KEYTHENTHENTHENCLOSEOPEN";
- 3090 LOCATE 22,34,0 : PRINT "OPENOPENF9 OPEN OPENF10OPENOPEN";
- 3100 LOCATE 23,34,0 : PRINT "OPENSCREENTHENTHENTHENLOAD SCREENTHENTHENTHENLOADOPEN";
- 3110 LOCATE 24,34,0 : PRINT "SCREENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENLOAD";
- 3120 COLOR 6,0
- 3130 LOCATE 8, 4,0 : PRINT "SOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUND";
- 3140 LOCATE 8,50,0 : PRINT "SOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUND";
- 3150 LOCATE 11, 4,0 : PRINT "SOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUND";
- 3160 LOCATE 11,50,0 : PRINT "SOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUND";
- 3170 LOCATE 14, 4,0 : PRINT "SOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUND";
- 3180 LOCATE 14,50,0 : PRINT "SOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUND";
- 3190 LOCATE 17, 4,0 : PRINT "SOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUND";
- 3200 LOCATE 17,50,0 : PRINT "SOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUND";
- 3210 LOCATE 20, 4,0 : PRINT "SOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUND";
- 3220 LOCATE 20,50,0 : PRINT "SOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUND";
- 3230 LOCATE 23, 4,0 : PRINT "SOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUND";
- 3240 LOCATE 23,50,0 : PRINT "SOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUND";
- 3250 COLOR 9,0
- 3260 LOCATE 9, 4,0 : PRINT "Resolution";
- 3270 LOCATE 9,50,0 : PRINT "Background";
- 3280 LOCATE 12, 4,0 : PRINT "Palette";
- 3290 LOCATE 12,50,0 : PRINT "Color";
- 3300 LOCATE 15, 4,0 : PRINT "Mode";
- 3310 LOCATE 15,50,0 : PRINT "Window";
- 3320 LOCATE 18, 4,0 : PRINT "Load";
- 3330 LOCATE 18,50,0 : PRINT "Save";
- 3340 LOCATE 21, 4,0 : PRINT "Quit";
- 3350 LOCATE 21,50,0 : PRINT "Help";
- 3360 COLOR 12,0
- 3370 LOCATE 10, 4,0 : PRINT "Mark";
- 3380 LOCATE 10,50,0 : PRINT "Unmark";
- 3390 LOCATE 13, 4,0 : PRINT "Cut";
- 3400 LOCATE 13,50,0 : PRINT "Paste";
- 3410 LOCATE 16, 4,0 : PRINT "Erase";
- 3420 LOCATE 16,50,0 : PRINT "Circle";
- 3430 LOCATE 19, 4,0 : PRINT "Rectangle";
- 3440 LOCATE 19,50,0 : PRINT "Line";
- 3450 COLOR 14,0
- 3460 LOCATE 10,17,0 : PRINT "Clear";
- 3470 LOCATE 13,17,0 : PRINT "Paint";
- 3480 LOCATE 13,63,0 : PRINT "Unpaint";
- 3490 LOCATE 16,17,0 : PRINT "Back-up";
- 3500 LOCATE 16,63,0 : PRINT "Restore";
- 3510 LOCATE 24,4,0
- 3520 COLOR 9,0:PRINT "Blue";:COLOR 6,0:PRINT " = Function Key Alone";
- 3530 LOCATE 25,4,0
- 3540 COLOR 12,0:PRINT "Red";:COLOR 6,0:PRINT " = With Shift ";
- 3550 COLOR 14,0:PRINT " Yellow";:COLOR 6,0:PRINT " = With Ctrl";
- 3560 LOCATE 25,50,0:PRINT "Press any key to continue.";
- 3570 IN$=INKEY$:IF IN$="" THEN 3570
- 3580 SCREEN RES,0:IF RES=1 THEN COLOR BACK,PAL
- 3590 IF WNDW=1 THEN GOSUB 1570 ELSE GOSUB 1610
- 3600 GOSUB 1710
- 3610 RETURN
- 3620 GOSUB 3840:GOSUB 3890
- 3630 IF ESC=1 THEN ESC=0:GOTO 3660
- 3640 IF IN$="N" OR IN$="n" THEN 3660
- 3650 CLS:MARK=0:BCKPNT=0
- 3660 RETURN
- 3670 IF MODE=0 THEN MODE=1 ELSE MODE=0
- 3680 IF WNDW=0 THEN 3710
- 3690 POKE &H4E,3:LOCATE 25,2*RES:PRINT "MODE=";
- 3700 IF MODE=0 THEN PRINT "DRAW "; ELSE PRINT "ERASE";
- 3710 RETURN
- 3720 POKE &H4E,1:LOCATE 23,1:PRINT SPC(39*RES);
- 3730 IF RES=1 THEN I=3:LOCATE 23,13 ELSE I=1:LOCATE 23,33
- 3740 PRINT "Border Color = ";:BRD=-1
- 3750 BRD=BRD+1:IF BRD>I THEN BRD=0
- 3760 IF RES=1 THEN LOCATE 23,28 ELSE LOCATE 23,48
- 3770 IF BRD=0 THEN POKE &H4E,1:PRINT "B" ELSE POKE &H4E,BRD:PRINT USING "#";BRD;
- 3780 IN$=INKEY$:IF IN$="" THEN 3780 ELSE IN=ASC(IN$)
- 3790 IF IN=27 THEN ESC=1:GOTO 3810
- 3800 IF IN<>13 THEN 3750
- 3810 LOCATE 23,1:IF WNDW=0 THEN PRINT SPC(39*RES); ELSE GOSUB 1730
- 3820 RETURN
- 3830 RETURN
- 3840 IF MODE=0 THEN IF PNT=1 THEN I=COL ELSE I=BCKPNT
- 3850 IF MODE=1 THEN IF PNT=1 THEN I=0 ELSE I=BCKPNT
- 3860 PSET (X,Y),I
- 3870 IF MARK=1 THEN PSET (MARKX,MARKY),BCKMRK
- 3880 RETURN
- 3890 LOCATE 23,1:PRINT SPC(39*RES);
- 3900 IF RES=1 THEN LOCATE 23,14 ELSE LOCATE 23,35
- 3910 POKE &H4E,1:PRINT "Are you sure?";
- 3920 IN$=INKEY$:IF IN$="" THEN 3920 ELSE IN$=MID$(IN$,1,1)
- 3930 IF IN$=CHR$(27) THEN ESC=1:GOTO 3960
- 3940 IF IN$="Y" OR IN$="y" OR IN$="N" OR IN$="n" THEN 3960
- 3950 ERROR 205:ESC=1
- 3960 LOCATE 23,1:IF WNDW=0 THEN PRINT SPC(39*RES); ELSE GOSUB 1730:GOSUB 1760
- 3970 RETURN
- 3980 IF ERR<>7 AND ERR<>73 THEN 4080
- 3990 SCREEN 0,1,0,0:WIDTH 80:CLS:BEEP
- 4000 IF ERR=73 THEN 4040
- 4010 PRINT "You do not have enough memory to run PC-Pen."
- 4020 PRINT "See the PC-Pen User's Manual for memory requirements."
- 4030 GOTO 4050
- 4040 PRINT "PC-Pen must be run under Advanced Basic."
- 4050 PRINT:PRINT "Press any key to continue."
- 4060 IN$=INKEY$:IF IN$="" THEN 4060
- 4070 SYSTEM
- 4080 FOR I=1 TO 18
- 4090 IF ERR<>ERRCD%(I) THEN 4180
- 4100 POKE &H4E,1:LOCATE 23,1:PRINT SPC(39*RES);
- 4110 IF RES=1 THEN LOCATE 23,2 ELSE LOCATE 23,22
- 4120 BEEP:PRINT ERRMSG$(I);
- 4130 IF RES=1 THEN LOCATE 23,26 ELSE LOCATE 23,46
- 4140 PRINT "Press any key.";
- 4150 IN$=INKEY$:IF IN$="" THEN 4150
- 4160 IF ERRRES%(I)=1 THEN LOCATE 23,1:IF WNDW=0 THEN PRINT SPC(39*RES); ELSE GOSUB 1730
- 4170 GOTO 4200
- 4180 NEXT I
- 4190 BEEP
- 4200 RESUME NEXT
- 4210 DATA &H4,&H24,&H44,&H64
- 4220 DATA 5, 1, "Not enough room."
- 4230 DATA 27, 0, "Printer error."
- 4240 DATA 52, 0, "Invalid file name."
- 4250 DATA 53, 0, "File not found."
- 4260 DATA 61, 0, "Disk is full."
- 4270 DATA 64, 0, "Invalid file name."
- 4280 DATA 67, 0, "Invalid drive or path."
- 4290 DATA 68, 0, "Disk error."
- 4300 DATA 70, 0, "Disk write-protected."
- 4310 DATA 71, 0, "Disk not ready."
- 4320 DATA 72, 0, "Disk is bad."
- 4330 DATA 76, 0, "Invalid drive or path."
- 4340 DATA 200, 1, "Invalid area."
- 4350 DATA 201, 1, "No Back-up."
- 4360 DATA 202, 1, "Mark not set."
- 4370 DATA 203, 1, "Nothing cut."
- 4380 DATA 204, 1, "Low resolution only."
- 4390 DATA 205, 0, "Y=yes, N=no."
- 4400 DATA "Normal ","Complement ","Animate ","Superimpose","Mask "
-